package cn.com.zzl.util;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * 说明：如果需要使用该工具类，请先在spring配置文件中配置
 * Description：配置文件读取器（一般般）
 * Created by 朱正磊 on 2017-07-21 17:03.
 */
public class CustomizedPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {

    /**
     * @Desc properties文件key=value内容（Map集合存储）
     */
    private final static Map<String, String> ctxPropertiesMap = new HashMap<String, String>();

    /**
     * @Desc 存储properties文件中的key=value到map集合中
     * @param beanFactoryToProcess ConfigurableListableBeanFactory
     * @param props Properties对象
     * @throws BeansException 父类抛出的异常信息（重写父类的方法）
     */
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,
                                     Properties props) throws BeansException {
        super.processProperties(beanFactoryToProcess, props);//调用父类方法获取Properties实例化对象
        for (Object key : props.keySet()) {
            String keyStr = key.toString();
            String value = props.getProperty(keyStr);
            ctxPropertiesMap.put(keyStr, value);
        }
    }

    /**
     * @Desc 根据properties中的key获取对应的value
     * @param key properties中的key
     * @return 返回properties文件中的value
     */
    public static String getContextProperty(String key) {
        return ctxPropertiesMap.get(key);
    }

}
